// package语句：声明当前类所在的包
// com.itheima.javabean表示这是一个JavaBean类型的类，通常用于封装数据
package com.itheima.javabean;

// public是访问修饰符，表示这个类可以被任何地方访问
// class关键字用于定义一个类
// Student是类名，表示这是一个学生类
public class Student {
    // 成员变量需要私有（private）：这是封装的第一步，防止外部直接访问和修改
    // private修饰符表示只有这个类内部可以直接访问这些变量
    // String name：声明一个字符串类型的成员变量，用于存储学生姓名
    private String name;
    // int age：声明一个整型成员变量，用于存储学生年龄
    private int age;
    // char sex：声明一个字符型成员变量，用于存储学生性别
    private char sex;
    // double math：声明一个双精度浮点型成员变量，用于存储数学成绩
    private double math;
    // double english：声明一个双精度浮点型成员变量，用于存储英语成绩
    private double english;


    // 必须提供无参构造器：JavaBean的规范要求必须有一个无参数的构造方法
    // 构造方法用于创建对象时初始化对象
    // 无参构造器不接收任何参数，创建的对象成员变量会有默认值
    public Student() {
        // 构造方法体为空，表示使用默认的初始化方式
    }

    // 有参数构造器：可选的，用于创建对象时直接给成员变量赋值
    // 这里的构造器接收5个参数，分别对应学生的5个属性
    public Student(String name, int age, char sex, double math, double english) {
        // this.name = name：this代表当前对象，这里将传入的参数name赋值给当前对象的name成员变量
        // 使用this可以区分成员变量和局部变量（参数）
        this.name = name;
        // 将传入的参数age赋值给当前对象的age成员变量
        this.age = age;
        // 将传入的参数sex赋值给当前对象的sex成员变量
        this.sex = sex;
        // 将传入的参数math赋值给当前对象的math成员变量
        this.math = math;
        // 将传入的参数english赋值给当前对象的english成员变量
        this.english = english;
    }

    // 必须提供getter和setter方法：这是封装的第二步，通过公共方法访问和修改私有成员变量
    // getter方法用于获取成员变量的值
    // 这里是getName方法，返回name成员变量的值
    public String getName() {
        return name;
    }

    // setter方法用于设置成员变量的值
    // 这里是setName方法，接收一个name参数，并将其赋值给成员变量
    public void setName(String name) {
        // this.name = name：将传入的参数赋值给成员变量
        this.name = name;
    }

    // getAge方法：获取age成员变量的值
    public int getAge() {
        return age;
    }

    // setAge方法：设置age成员变量的值
    public void setAge(int age) {
        this.age = age;
    }

    // getSex方法：获取sex成员变量的值
    public char getSex() {
        return sex;
    }

    // setSex方法：设置sex成员变量的值
    public void setSex(char sex) {
        this.sex = sex;
    }

    // getMath方法：获取math成员变量的值
    public double getMath() {
        return math;
    }

    // setMath方法：设置math成员变量的值
    public void setMath(double math) {
        this.math = math;
    }

    // getEnglish方法：获取english成员变量的值
    public double getEnglish() {
        return english;
    }

    // setEnglish方法：设置english成员变量的值
    public void setEnglish(double english) {
        this.english = english;
    }
}
